Conditional Expressions
caution
This feature is available starting from QQL 5.6.
Basic
Similarly to ternary operators in Python, you can use if ... else conditional expressions to test a simple condition:
note
Condition under if must be a boolean expression.
select 'few' if n < 3 else 'many', n
array join [0, 1, 2, 3, 4] as n
Switch Case
Similarly to SQL, you can use QQL conditional expressions to test several cases:
Synopsis
CASE expression
WHEN value THEN result
[WHEN...]
[ELSE result]
END
note
- Types of
THENandELSEexpressions must be equal (for example, allfloator allarraysofint32). - If several
WHENexpressions are true, the first correspondingTHENresult is selected.
select case n
when 0 then 'zero'
when 1 then 'one'
when 2 then 'two'
else 'many'
end, n
array join [0, 1, 2, 3, 4] as n
If case expression is empty, expressions under WHEN must return boolean values:
select case
when n == 0 then 'zero'
when n == 1 then 'one'
when n == 2 then 'two'
else 'many'
end, n
array join [0, 1, 2, 3, 4] as n
-- another format of writing the expression in the first section using Switch Case keywords:
select case when n < 3 then 'few' else 'many' end, n
array join [0, 1, 2, 3, 4] as n
with
(case size(entries)
when 1 then 'one'
when 2 then 'two'
when 3 then 'three'
else 'many'
end) as t
select
t, count{}()
from KRAKEN
group by t
select case
when size(entries[this is L1Entry]) > 0
then 'L1'
when size(entries[this is L2EntryNew or this is L2EntryUpdate]) > 0
then 'L2'
end,
entries
from KRAKEN